package zww.study.basic;

public class ArrayStudy {
    public static void main(String[] args) {
        // 数组：存储数据长度固定的容器，存储多个数据的类型要一致

        // 数组的定义格式一：数据类型[] 数组名
        int[] arr; // 定义一个整型初数组
        double[] arr1; // 定义一个double型初数组
        char[] arr2; // 定义一个字符型初数组

        // 数组的定义格式二：数据类型 数组名[]
        int arr3[];
        double arr4[];
        char arr5[];

        // 数组初始化
        // 一 动态初始化：：只给定数组的长度，由系统给出默认初始化值
        // 数据类型[] 数组名 = new 数据类型[数组长度]
        int[] arr6 = new int[3];
        System.out.println(arr6);
        /*
        *等号左边：
                int:数组的数据类型
                []:代表这是一个数组
                arr:代表数组的名称
        *等号右边：
                new:为数组开辟内存空间
                int:数组的数据类型
                []:代表这是一个数组
                5:代表数组的长度
        */

        // 二、静态初始化：在创建数组时，直接将元素确定
        // 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,....};
        // 简化： 数据类型[] 数组名 = {元素1,,元素2,....};

        int[] arr10 = new int[]{11, 22, 33};
        int[] arr11 = {44, 55, 66};

        // 數組索引index:从0开始
        System.out.println(arr6[0]);

        // 内存分配:内存是计算机中的重要原件，临时存储区域，作用是运行程序。
        // 堆内存栈内存
        //  Java虚拟机要运行程序，必须要对内存进行空间的分配和管理。
        // 方法区：存储可以运行的class文件
        // 堆内存：存储对象或数组, 用new来创建的都存储在堆内存中
        // 方法栈：方法运行时使用的内存，比如main方法运行时候，进入方法栈中执行

        // 数组异常 索引异常，空指针异常

        // 三、二维数组动态初始化
            // 数据类型[][] 变量名 = new 数据类型[m][n]
                // m 表示这个二维数组，可以存放多少个一维数据
                // n 表示每一个一维数据，可以存放多少个元素
        // 四、 二维数组静态初始化
            // 数据类型[][] 变量名 = new 数据类型[][]{{1,2}，{1,2}，{}}
            // 数据类型[][] 变量名 = {{}，{}，{}}
    }
}
